package cliente.vista;

import java.awt.BorderLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.GroupLayout;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JPasswordField;
import javax.swing.JTextField;
import javax.swing.GroupLayout.Alignment;

import cliente.controle.GerenteControlador;
import cliente.modelo.Gerente;

public class AlterarGerenteView {

	private JFrame tela;
	private JLabel nome;
	private JLabel login;
	private JTextField nomeCampo;
	private JTextField loginCampo;

	private JLabel autorizacao;
	private JPasswordField senha;
	private VerGerentesView verGerentesView;
	private VisualizarGerenteView visualizarGerenteView;

	private ActionListener ouvinte;
	private JPanel painel;
	private JButton voltar;
	private JButton alterar;

	private Gerente gerente;

	public void iniciaAlterarGerenteView(Gerente gerente,
			VerGerentesView verGerentesView,
			VisualizarGerenteView visualizarGerenteView) {
		this.verGerentesView = verGerentesView;
		this.visualizarGerenteView = visualizarGerenteView;

		this.gerente = gerente;
		ouvinte = new acao();
		tela = new JFrame();
		tela.setBounds(500, 300, 500, 300);
		tela.setResizable(false);
		tela.setTitle("Alterar Dados do Gerente");
		tela.setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE);
		painel = new JPanel();

		GroupLayout layout = new GroupLayout(painel);
		painel.setLayout(layout);

		layout.setAutoCreateGaps(true);
		layout.setAutoCreateContainerGaps(true);

		voltar = new JButton("Voltar");
		voltar.addActionListener(ouvinte);
		alterar = new JButton("Alterar");
		alterar.addActionListener(ouvinte);

		autorizacao = new JLabel("GERENTE: Digite sua Senha");
		nome = new JLabel("Nome do Gerente: ");
		login = new JLabel("Login do Gerente: ");
		nomeCampo = new JTextField(gerente.getNome());
		loginCampo = new JTextField(gerente.getLogin());
		senha = new JPasswordField();

		organizaFields(layout);

		tela.setLayout(new BorderLayout());
		tela.add(painel, BorderLayout.CENTER);
		tela.setVisible(true);

	}

	class acao implements ActionListener {
		@Override
		public void actionPerformed(ActionEvent arg0) {
			if (arg0.getSource() == voltar) {
				tela.dispose();
			}
			if (arg0.getSource() == alterar) {
				String senhaGerente = String.copyValueOf(senha.getPassword());
				if (GerenteControlador.validaDadosGerente(nomeCampo.getText(),
						loginCampo.getText(), gerente.getSenha(), gerente
								.getSenha())) {
					GerenteControlador.alterarGerente(verGerentesView,
							visualizarGerenteView, tela, gerente, nomeCampo
									.getText(), loginCampo.getText(),
							senhaGerente);
				} else {
					JOptionPane.showMessageDialog(tela, "Dados Incompletos");
				}
			}
		}

	}

	private void criaGruposVerticais(GroupLayout layout) {
		GroupLayout.SequentialGroup vGroup = layout.createSequentialGroup();
		vGroup.addGroup(layout.createParallelGroup(Alignment.CENTER)
				.addComponent(nome).addComponent(nomeCampo));
		vGroup.addGroup(layout.createParallelGroup(Alignment.CENTER)
				.addComponent(login).addComponent(loginCampo));
		vGroup.addGroup(layout.createParallelGroup(Alignment.CENTER)
				.addComponent(autorizacao));
		vGroup.addGroup(layout.createParallelGroup(Alignment.CENTER)
				.addComponent(senha));
		vGroup.addGroup(layout.createParallelGroup(Alignment.CENTER)
				.addComponent(voltar).addComponent(alterar));
		layout.setVerticalGroup(vGroup);
	}

	private void criaGruposHorizontais(GroupLayout layout) {
		GroupLayout.SequentialGroup hGroup = layout.createSequentialGroup();
		hGroup.addGroup(layout.createParallelGroup().addComponent(nome)
				.addComponent(login).addComponent(autorizacao).addComponent(
						senha).addComponent(voltar));
		hGroup.addGroup(layout.createParallelGroup().addComponent(nomeCampo)
				.addComponent(loginCampo).addComponent(alterar));
		layout.setHorizontalGroup(hGroup);
	}

	private void organizaFields(GroupLayout layout) {
		criaGruposHorizontais(layout);
		criaGruposVerticais(layout);
	}

}
